package com.nwork.qingmanhua.imagedown;

import android.graphics.Bitmap;
import android.text.TextUtils;

import java.lang.ref.SoftReference;
import java.util.HashMap;
import java.util.Map;

/**
 * 软引用缓存管理
 *
 * @author zhuqiao
 */
public class SoftMemoryCache implements IMemoryCache {
    private Map<String, SoftReference<Bitmap>> map = new HashMap<String, SoftReference<Bitmap>>();

    /**
     * 通过指定的url  得到Bitmap
     *
     * @param url
     * @return
     */
    @Override
    public Bitmap get(String url) {
        if (!TextUtils.isEmpty(url) && map.containsKey(url)) {
            SoftReference<Bitmap> soft = map.get(url);
            if (soft != null && soft.get() != null) {
                return soft.get();
            }
        }
        return null;
    }

    /**
     * 将数据加入缓存
     *
     * @param url
     * @param bitmap
     */
    @Override
    public void put(String url, Bitmap bitmap) {
        if (!TextUtils.isEmpty(url) && bitmap != null) {
            SoftReference<Bitmap> soft = new SoftReference<Bitmap>(bitmap);
            map.put(url, soft);
        }
    }

    /**
     * 删除指定的缓存
     *
     * @param url
     */
    @Override
    public void remove(String url) {
        if (!TextUtils.isEmpty(url)) {
            map.remove(url);
        }
    }

    /**
     * 清除所有的缓存
     */
    @Override
    public void clearAll() {
        map.clear();
    }

}
